package com.piano.moguyun.utils;

import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.channels.FileChannel.MapMode;
import java.security.Key;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public final class MD5Utils {
//    private static final char[] hexDigits = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
//
//    private MD5Utils() {
//    }
//
//    public static String toHexString(byte[] bArr) {
//        if (bArr == null) {
//            return "";
//        }
//        StringBuilder stringBuilder = new StringBuilder(bArr.length * 2);
//        for (byte b : bArr) {
//            stringBuilder.append(hexDigits[(b >> 4) & 15]);
//            stringBuilder.append(hexDigits[b & 15]);
//        }
//        return stringBuilder.toString();
//    }
//
//    public static String md5(File file) throws IOException {
//        Closeable channel;
//        Closeable closeable = null;
//        try {
//            MessageDigest instance = MessageDigest.getInstance("MD5");
//            Closeable fileInputStream = new FileInputStream(file);
//            try {
//                channel = ((FileInputStream) fileInputStream).getChannel();
//            } catch (NoSuchAlgorithmException e) {
//                file = e;
//                channel = null;
//                closeable = fileInputStream;
//                try {
//                    throw new RuntimeException(file);
//                } catch (Throwable th) {
//                    file = th;
//                    throw file;
//                }
//            } catch (Throwable th2) {
//                file = th2;
//                channel = null;
//                closeable = fileInputStream;
//                throw file;
//            }
//            try {
//                instance.update(channel.map(MapMode.READ_ONLY, 0, file.length()));
//                file = instance.digest();
//                return toHexString(file);
//            } catch (NoSuchAlgorithmException e2) {
//            } catch (Throwable th3) {
//            }
//        } catch (NoSuchAlgorithmException e3) {
//        } catch (Throwable th4) {
//        }
//    }
//
//    public static String md5(String str) {
//        try {
//            return toHexString(MessageDigest.getInstance("MD5").digest(str.getBytes("UTF-8")));
//        } catch (String str2) {
//            throw new RuntimeException(str2);
//        } catch (String str22) {
//            throw new RuntimeException(str22);
//        }
//    }
//
//    public static String aes(String str) {
//        if (StringUtil.isEmpty(str)) {
//            return null;
//        }
//        try {
//            Key secretKeySpec = new SecretKeySpec(HttpConstantApi.getInstance().getAESSecret().getBytes(), "AES");
//            Cipher instance = Cipher.getInstance("AES/ECB/PKCS5Padding");
//            instance.init(1, secretKeySpec);
//            return new String(Hex.encodeHex(instance.doFinal(str.getBytes())));
//        } catch (String str2) {
//            throw new RuntimeException(str2.getMessage());
//        }
//    }
//
//    public static String decrypt(String str) {
//        if (StringUtil.isEmpty(str)) {
//            return null;
//        }
//        try {
//            Key secretKeySpec = new SecretKeySpec(HttpConstantApi.getInstance().getAESSecret().getBytes(), "AES");
//            Cipher instance = Cipher.getInstance("AES/ECB/PKCS5Padding");
//            instance.init(2, secretKeySpec);
//            str = instance.doFinal(Hex.decodeHex(String.valueOf(str.toCharArray())));
//        } catch (String str2) {
//            str2.printStackTrace();
//            str2 = null;
//        }
//        return new String(str2);
//    }
//    public static void getPlanIdSign() {
//        String str = userId + "student" + "3478cbbc33f84bd00d75d7dfa69e0daa";
//        try {
//            // 生成一个MD5加密计算摘要
//            MessageDigest md = MessageDigest.getInstance("MD5");
//            // 计算md5函数
//            md.update(str.getBytes());
//            // digest()最后确定返回md5 hash值，返回值为8位字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
//            // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
//            // 一个byte是八位二进制，也就是2位十六进制字符（2的8次方等于16的2次方）
//            sign = new BigInteger(1, md.digest()).toString(16);
//            planId = sign;
//            System.out.println();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
}
